]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
a11y: exposing the proper button role while using toggle_mode on St.Button
authorAlejandro Piñeiro <apinheiro@igalia.com>
Fri, 24 Aug 2012 15:18:31 +0000 (17:18 +0200)
committerAlejandro Piñeiro <apinheiro@igalia.com>
Mon, 27 Aug 2012 08:43:35 +0000 (10:43 +0200)
https://bugzilla.gnome.org/show_bug.cgi?id=682366

src/st/st-button.c

index a4edbe75a57d118b112f607091456876362e42d6..3d672bc286578a4f4182350989a951fca4a773e1 100644 (file)
@@ -777,14 +777,32 @@ st_button_accessible_notify_label_cb (StButton   *button,
   g_object_notify (G_OBJECT (accessible), "accessible-name");
 }
 
+static void
+st_button_accessible_compute_role (AtkObject *accessible,
+                                   StButton  *button)
+{
+  atk_object_set_role (accessible, button->priv->is_toggle
+                       ? ATK_ROLE_TOGGLE_BUTTON : ATK_ROLE_PUSH_BUTTON);
+}
+
+static void
+st_button_accessible_notify_toggle_mode_cb (StButton   *button,
+                                            GParamSpec *psec,
+                                            AtkObject  *accessible)
+{
+  st_button_accessible_compute_role (accessible, button);
+}
+
 static void
 st_button_accessible_initialize (AtkObject *obj,
-                                gpointer   data)
+                                 gpointer   data)
 {
   ATK_OBJECT_CLASS (st_button_accessible_parent_class)->initialize (obj, data);
 
-  obj->role = ATK_ROLE_PUSH_BUTTON;
+  st_button_accessible_compute_role (obj, ST_BUTTON (data));
 
   g_signal_connect (data, "notify::label",
                     G_CALLBACK (st_button_accessible_notify_label_cb), obj);
+  g_signal_connect (data, "notify::toggle-mode",
+                    G_CALLBACK (st_button_accessible_notify_toggle_mode_cb), obj);
 }